import { TOKEN_KEY } from "@/constants"  // 从常量文件导入令牌存储的键名
import type { Profile } from "@/types/typings"
import Cookies from "js-cookie"          // 用于处理浏览器 Cookie
import { defineStore } from "pinia"      // Pinia 状态管理库的核心函数
import { ref } from "vue"                // Vue 3 的响应式引用

// 定义一个名为 'hm-user' 的全局状态存储
export const useUserStore = defineStore('hm-user', () => {
  // 从 Cookie 中读取 token 并创建响应式引用
  const token = ref(Cookies.get(TOKEN_KEY) || "")
  
  // 设置 token 的方法
  // 登录成功，保存token
  const setToken = (val: string) => {
    token.value = val  // 更新内存中的 token
    Cookies.set(TOKEN_KEY, val)  // 将 token 存储到 Cookie 中
  }

  // 清除 token 的方法
  const removeToken = () => {
    token.value = ""  // 清空内存中的 token
    Cookies.remove(TOKEN_KEY)  // 删除 Cookie 中的 token
  }

  // 用户信息
  const profile = ref<Profile>({} as Profile)
  // 设置用户信息
  const setProfile = (val:Profile) =>{
    profile.value = val
  }

  // 清除用户信息
  const clearProfile = () =>{
    profile.value = {} as Profile
  }
  
  // 返回可供外部使用的状态和方法
  return { token, setToken, removeToken,
    profile,setProfile,clearProfile
   } 
})